<?php namespace app\admin\controller;

use houdunwang\view\View;

class Category extends Common {
    //定义属性，用于存储Category模型
    protected $db;
    public function __init(){
        //引入Category模型,因为控制器不处理具体的事情，要交给模型处理，控制器只是视图和模型的桥梁
        $this->db =new \system\model\Category();
    }

    public function index(){
        //获取数据表category里面的所有字段，
        $data = Db::table('category')->get();
        //第二个参数会增加'_',带——的字段就是树状显示
        $data = Arr::tree($data,'cname');
        //dd($data);
        //分配变量,使模板可以用到
        View::with('data',$data);
        //载入模板
        return view();
    }
    //添加顶级分类
    public function store(){
        if(IS_POST){
            if($this->db->store()){
                message('添加顶级分类成功',u('index'),'success',2);
            };
            message('添加顶级分类失败',u('store'),'error',2);   //第二个参数为back或空返回当前页
        }
        return view();
    }
    //添加子集分类
    public function addSon(){
        if(IS_POST){
            if($this->db->store()){
                message('添加子集分类成功',u('index'),'success',2);
            };
            message('添加子集分类失败',u('store'),'error',2);   //第二个参数为back或空返回当前页
        }

        //获取地址栏get或post参数
        $cid = q('get.cid');
        //在表category里找到主键cid为$cid的全部数据
        $cateData = Db::table('category')->find($cid);
        //分配变量
        View::with('cateData',$cateData);
        return view();
    }

    //编辑
    public function edit(){
        if(IS_POST){
            if($this->db->edit()){
                message('编辑分类成功',u('index'),'success',2);
            };
            message('编辑分类失败',u('edit'),'error',2);   //第二个参数为back或空返回当前页
        }

        //1 获取旧数据，点击进入编辑页面后获取get参数
        $cid = q('get.cid');
        //获取category中主键为$cid这条是数据的全部字段信息
        $oldData = Db::table('category')->find($cid);
        //分配变量
        View::with('oldData',$oldData);
        //2 处理'所属分类'的数据，【不能包含自己及自己子集】,因为容易死循环，所以所属分类只能往数字小的写，如下把原来的2改为6死循环了
        //      6	鞋子	3
        //      3	袜子	(2)6
        $cateData = $this->db->getcateData($cid);
        //p($cateData);
        //分配变量
        View::with('cateData',$cateData);
        return view();
    }

    //删除，方式一：如果是删除的元素有子集，则提示先删除子集
    public function del(){
        $cid=q('get.cid');
        if($this->db->delData($cid)){
            message('删除分类成功',u('index'),'success',2);
        };
        message('删除分类失败',u('index'),'error',2);
    }


    /**
     * 删除，方式二：如果删除元素有子集，则删除后，它的直接子集的pid提升一级，成为删除元素的pid
     */
    public function delete(){
        $cid = q('get.cid');
        //1 首先获取当前要删除数据的pid删
        //pluck在手册中【数据库-查询构造器】
        //2 将儿子的pid修改，修改为当前要删除数据的pid
        $this->db->where('pid',$cid)->update(['pid=>$pid']);
        //3 执行当前数据的删除,注意命名空间
        $res = \system\mode\Category::delete($cid);
        //也可以Db::table('category')->delete();
        if($res){
            message('分类删除成功',u('index'),'success');
        }
        message('删除失败','back','error');
    }











}


























